package com.hjk.common.aop.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author huangjunkai
 * @version 1.0
 * @date 2020/7/15 10:05
 */
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisDistributedLock {
    /**
     * 锁名称,red的Key,唯一,必填
     * 建议格式: 微服务名:业务模块名:业务方法名
     */
    String lockKey();

    /**
     * 锁自动释放时间
     * 一般要大于各服务器的时钟飘移时长+任务执行时长。默认10分钟
     */
    long taskLeaseTime() default 10L;

    /**
     * 锁释放时间单位 分钟
     */
    TimeUnit timeUnit() default TimeUnit.MINUTES;


}
